home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
IRIX Patches 1995 March
/
SGI IRIX Patches 1995 Mar.iso
/
relnotes
/
patchSG0000164
/
ch1.z
/
ch1
Wrap
Text File
|
1995-03-10
|
13KB
|
397 lines
- 1 -
1. _P_a_t_c_h__S_G_0_0_0_0_1_6_4__R_e_l_e_a_s_e__N_o_t_e
This release note describes patch SG0000164 to Delta/C++ 1.0
on IRIX 5.2.
1.1 _S_u_p_p_o_r_t_e_d__H_a_r_d_w_a_r_e__P_l_a_t_f_o_r_m_s
This patch contains bug fixes for all platforms.
1.2 _S_u_p_p_o_r_t_e_d__S_o_f_t_w_a_r_e__P_l_a_t_f_o_r_m_s
This patch contains bug fixes for all Irix 5.2 based
releases.
1.3 _B_u_g_s__F_i_x_e_d__b_y__P_a_t_c_h__S_G_0_0_0_0_1_6_4
This patch contains fixes for the following bugs in
Delta/C++ 1.0 on IRIX 5.2. Bug numbers from Silicon
Graphics bug tracking system are included for reference.
The bug descriptions are grouped together by major category
for ease of lookup.
_C_o_d_e _G_e_n_e_r_a_t_i_o_n
+o CC lays out virtual base classes incorrectly for many
complex multiple-inheritance heirarchies (especially
when the same class is derived along multiple paths,
some virtually, and some non-virtually).
Symptoms include: Overlapping of member references,
leading to data corruption; compiler crashes; and other
signs of incorrect execution. (228998).
+o The compiler would generate bad virtual tables for a
case where a class was inherited from along more than
one path, but was overridden along only a non-leftmost
path (242778).
+o The compiler would sometimes generate code that called
a destructor for a temporary even if it was never
actually constructed (e.g. if the constructor call was
within a conditional expression) (224032).
+o CC -non_shared programs do not call their static
initializers (223396).
+o CC -O gets an optimizer crash on a struct which
contains a single "char" member (221193).
- 2 -
+o The ++ and -- operators generate bad code for "long
long" variables (221655).
+o The "wide character" type is not properly implemented
(CC thinks it is 2 bytes long instead of 4) (231456).
+o CC -O causes a backend (uopt) crash when compiling a
call with 0 parameters to a function that has a "(...)"
parameter list (no fixed parameters) (249158).
+o CC used to treat 1-bit signed bitfields as unsigned,
which is different from "cc" and the MIPS conventions
(222886).
+o CC generates bad assembly when an inline destructor has
a local variable which also has an inline destructor
(249416).
+o CC sometimes generates a bad object file when a nested
class derives from a top-level class, causing linker
errors ("bad relocation entry") (224832).
+o CC generates a bad object file if the only references
to a virtual inline destructor are non-virtual
references (e.g. when destroying arrays of objects of
that type) (249064).
_S_y_n_t_a_x _A_n_a_l_y_s_i_s
+o CC should only report on an ambiguity at the point of
use of an ambiguous identifier, not at the point of
declaration (254050).
+o CC gives an incorrect "ambiguity" error on a class that
has both an "operator void *()" and an "operator
structtag *()" where "structtag" is an incomplete type
(248671).
+o CC gives an incorrect "ambiguity" error on a cast
operator returning a typedef'ed type (219896).
+o CC sometimes gives an incorrect "ambiguity" error when
explicitly class- qualifying an inherited identifier
with a virtual base class that is inherited along
different paths (254238).
+o NCC bloats up and dies on very large string
concatenations (100+ KB of strings in thousands of
pieces). (There is now a much more efficient string
concatenation algorithm) (221884).
- 3 -
+o CC incorrectly rejects certain float constants that are
specified to the 6th decimal place; e.g. "0.009775F".
(229761).
+o CC dies if it sees a derived class with the same name
as a nested type in one of its base classes (246264).
+o CC bloats and dies if it sees a class constructor take
a parameter of the same type by value (as opposed to a
pointer or reference) (248259).
+o CC crashes on a switch statement with a switch
expression that is a function call cast to some type
(248646).
+o CC crashes on a bogus declaration of the form "char c =
c;" (221883).
+o The compiler gives an error if a conversion operator
returns the same type that it is a member of (or a
reference to it, or to one of its base types). It
should only warn about this and refuse to use such a
conversion operator (244502).
+o CC sometimes gives a spurious "template" syntax error
on a "<" expression, if the term preceding it is a
member of a struct that has the same name as a global
type (250162).
+o NCC -w does not suppress warnings for .i (already
preprocessed) files (218471).
_T_e_m_p_l_a_t_e _I_n_s_t_a_n_t_i_a_t_i_o_n
+o The compiler goes off into an infinite "instantiation
loop" for certain templates (especially some of the
Rogue Wave templates), repeatedly instantiating and
deleting a template instance (242258).
+o The compiler would abort if an overloaded template
function is instantiatied with an actual type argument
that is itself a const-qualified template type
instantiation (253857).
+o The compiler would generate a "weak" symbol even for an
uninstantiated template virtual table, leading to a
successful link, but a program abort at runtime
(237079).
+o Virtual tables of template classes and global template
functions would cause "duplicate" warning messages from
- 4 -
the linker (220855).
+o Instantiation loop (generating templates) and compiler
abort when "-non_shared" is specified.
+o The compiler would auto-include a file again even if it
was explicitly included, if the only reference to a
template in the file is through a specialization
(238664, 246513).
_S_y_m_b_o_l_i_c _D_e_b_u_g _I_n_f_o_r_m_a_t_i_o_n
+o CC generates bad symbolic debug line numbers for
"default" statements that are not at the end of switch
statements (227807).
+o CC puts out incorrectly scoped symbolic debug
information for a struct nested inside a function: even
external types that it uses inside the struct are
dumped within the scope of that struct, which confuses
the debugger badly (249721, 253545)
+o Symbolic debug information would sometimes not get
emitted for nested types (especially if the only
references to this type are within a function body)
(223812).
_S_m_a_r_t _B_u_i_l_d
+o The ClearCase configuration record for a target is
mangled if -smart is used, and "DCC -smart"
successfully "quick-checks" the target (i.e. it quickly
decides it wants to do nothing) (234338).
+o Smart Build aborts if a function is declared inside a
body in one header file, and defined in another include
file included afterwards (220368).
+o Smart Build fails to handle some function bodies that
it reads back from precompiled header files (it "loses
track" of them), causing them not to get emitted (and
in some cases, causing class information and virtual
tables also not to be generated if this function was
the first non-inline member function of a class)
(220916).
+o Smart Build gets confused when reading back a
precompiled header with a struct and a function of the
same name (e.g. "socket" from <socket.h>) (220618).
- 5 -
+o Smart Build aborts on static class objects initialized
with default initializer values to the constructor
(236064).
+o Smart Build crashes on a relation expression in a
preprocessor "#if" statement (238229).
+o "NCC -smart" (C++) aborts when reading a precompiled
header produced by a run of "ncc -smart" (C). We now
rebuild the precompiled header if the language is
different (221682).
+o Smart Build aborts if the -F flag is specified (NCC
-smart -F). This combination has been disabled: the -F
is ignored if -smart is specified (220417).
+o Smart Build fails to recompile a file if a new
command-line -D is specified (229537).
+o Incorrect source lines reported for syntax errors in
precompiled header files (238489).
_S_t_a_t_i_c _A_n_a_l_y_s_i_s _D_a_t_a_b_a_s_e _g_e_n_e_r_a_t_i_o_n
+o NCC -sa should add the magic line "-cvstatic" to a
newly-created cvstatic.fileset file (220509).
+o NCC -sa records an implicit function call twice
(220796).
+o NCC does not handle the -MDtarget option correctly (the
target is wrong in the Makedepend file) (218617).
+o NCC is missing the "-nofilt" option from cfront
(226359).
1.4 _S_u_b_s_y_s_t_e_m_s__I_n_c_l_u_d_e_d__i_n__P_a_t_c_h__S_G_0_0_0_0_1_6_4
This patch release includes these subsystems:
+o patchSG0000164.DeltaCC_sw.compiler
1.5 _I_n_s_t_a_l_l_a_t_i_o_n__I_n_s_t_r_u_c_t_i_o_n_s
Because you want to install patches for only the problems
you have encountered, patch software is not installed by
default. After reading the descriptions of the bugs fixed in
this patch, determine the patches that meet your specific
needs.
- 6 -
Patch software is installed like any other Silicon Graphics
software product. It must be installed from the miniroot.
Follow the instructions in your _I_R_I_S _S_o_f_t_w_a_r_e _I_n_s_t_a_l_l_a_t_i_o_n
_G_u_i_d_e to bring up the miniroot form of the software
installation tools.
Follow these steps to select a patch for installation:
1. At the Inst>prompt, type
iiiinnnnssssttttaaaallllllll ppppaaaattttcccchhhhSSSSGGGG_x_x_x_x_x_x_x
where _x_x_x_x_x_x_x is the patch number.
2. Select the desired patches for installation.
3. Initiate the installation sequence. Type
IIIInnnnsssstttt>>>> ggggoooo
4. You may find that two patches have been marked as
incompatible. If this occurs, you must deselect one
of the patches.
IIIInnnnsssstttt>>>> kkkkeeeeeeeepppp ppppaaaattttcccchhhhSSSSGGGG_x_x_x_x_x_x_x
where _x_x_x_x_x_x_x is the patch number.
5. After completing the installation process, exit the
_i_n_s_t program by typing
IIIInnnnsssstttt>>>> qqqquuuuiiiitttt
To remove a patch, use the _v_e_r_s_i_o_n_s _r_e_m_o_v_e command as you
would for any other software subsystem. The removal process
reinstates the original version of software unless you have
specifically removed the patch history from your system.
vvvveeeerrrrssssiiiioooonnnnssss rrrreeeemmmmoooovvvveeee ppppaaaattttcccchhhhSSSSGGGG_x_x_x_x_x_x_x
where _x_x_x_x_x_x_x is the patch number.
To keep a patch but increase your disk space, use the
_v_e_r_s_i_o_n_s _r_e_m_o_v_e_h_i_s_t command to remove the patch history.
vvvveeeerrrrssssiiiioooonnnnssss rrrreeeemmmmoooovvvveeeehhhhiiiisssstttt ppppaaaattttcccchhhhSSSSGGGG_x_x_x_x_x_x_x
where _x_x_x_x_x_x_x is the patch number.